package com.sunjob.mroresource.mapper;

import com.sunjob.common.domain.resource.Staff;
import com.sunjob.common.domain.resource.StaffPosition;
import com.sunjob.common.domain.resource.StaffTitle;
import com.sunjob.common.domain.resource.StaffType;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author: TomHuang
 * @date: 2022/8/11 18:55
 */
@Mapper
@Repository
public interface StaffMapper {


    //根据员工ID查询员工相关信息
    Staff queryStaffById(Long staffId);

    //根据员工工号查询员工相关信息
    Staff queryStaffByStaffJobId(String staffJobId);

    //根据员工名字模糊查询员工相关信息
    List<Staff> queryStaffByStaffName(String staffName);

    //根据员工ID、员工工号、员工名字联合查询员工相关信息
    Staff queryStaffBy(Long staffId, String staffJobId, String staffName);

    //查询所有员工
    List<Staff> queryAllStaff();

    //查询所有员工数量
    int queryStaffCount();

    //添加员工
    int insertStaff(Staff staff);

    //添加员工类型
    int insertStaffType(StaffType staffType);

    //查询所有员工类型
    List<String> queryAllStaffType();

    //根据员工Id查询员工类型
    String queryTypeByStaffId(Long staffId);

    //根据员工Id查询员工职位
    String queryPositionByStaffId(Long staffId);

    //根据员工Id查询员工技术职称
    String queryTitleByStaffId(Long staffId);

    //添加员工职位
    int insertStaffPosition(StaffPosition staffPosition);

    //查询所有员工职位
    List<String> queryAllStaffPosition();

    //添加技术职称
    int insertStaffTitle(StaffTitle staffTitle);

    //查询所有员工职位
    List<String> queryAllStaffTitle();

    //根据员工ID、工号或姓名修改员工相关信息
    int updateStaff(Staff staff);

    //根据员工ID修改员工状态0-在岗、1-离职、2-请假、3-休假
    int updateStaffStatus(Long staffId,int staffStatus);

    //获取最大员工类型Id
    int queryBiggestTypeId();

    //获取最大员工职位Id
    int queryBiggestPositionId();

    //获取最大员工技术职称Id
    int queryBiggestTitleId();
}
